home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / perl5 / CPAN.z / CPAN
Encoding:
Text File  |  1998-10-30  |  23.6 KB  |  661 lines

  1.  
  2.  
  3.  
  4. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CPAN - query, download and build perl modules from CPAN sites
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      Interactive mode:
  13.  
  14.        perl -MCPAN -e shell;
  15.  
  16.      Batch mode:
  17.  
  18.        use CPAN;
  19.  
  20.        autobundle, clean, install, make, recompile, test
  21.  
  22.  
  23. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  24.      The CPAN module is designed to automate the make and install of perl
  25.      modules and extensions. It includes some searching capabilities and knows
  26.      how to use Net::FTP or LWP (or lynx or an external ftp client) to fetch
  27.      the raw data from the net.
  28.  
  29.      Modules are fetched from one or more of the mirrored CPAN (Comprehensive
  30.      Perl Archive Network) sites and unpacked in a dedicated directory.
  31.  
  32.      The CPAN module also supports the concept of named and versioned
  33.      'bundles' of modules. Bundles simplify the handling of sets of related
  34.      modules. See BUNDLES below.
  35.  
  36.      The package contains a session manager and a cache manager. There is no
  37.      status retained between sessions. The session manager keeps track of what
  38.      has been fetched, built and installed in the current session. The cache
  39.      manager keeps track of the disk space occupied by the make processes and
  40.      deletes excess space according to a simple FIFO mechanism.
  41.  
  42.      All methods provided are accessible in a programmer style and in an
  43.      interactive shell style.
  44.  
  45.      IIIInnnntttteeeerrrraaaaccccttttiiiivvvveeee MMMMooooddddeeee
  46.  
  47.      The interactive mode is entered by running
  48.  
  49.          perl -MCPAN -e shell
  50.  
  51.      which puts you into a readline interface. You will have most fun if you
  52.      install Term::ReadKey and Term::ReadLine to enjoy both history and
  53.      completion.
  54.  
  55.      Once you are on the command line, type 'h' and the rest should be self-
  56.      explanatory.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  71.  
  72.  
  73.  
  74.      The most common uses of the interactive modes are
  75.  
  76.      Searching for authors, bundles, distribution files and modules
  77.        There are corresponding one-letter commands a, b, d, and m for each of
  78.        the four categories and another, i for any of the mentioned four. Each
  79.        of the four entities is implemented as a class with slightly differing
  80.        methods for displaying an object.
  81.  
  82.        Arguments you pass to these commands are either strings matching exact
  83.        the identification string of an object or regular expressions that are
  84.        then matched case-insensitively against various attributes of the
  85.        objects. The parser recognizes a regualar expression only if you
  86.        enclose it between two slashes.
  87.  
  88.        The principle is that the number of found objects influences how an
  89.        item is displayed. If the search finds one item, we display the result
  90.        of object->as_string, but if we find more than one, we display each as
  91.        object->as_glimpse. E.g.
  92.  
  93.            cpan> a ANDK
  94.            Author id = ANDK
  95.                EMAIL        a.koenig@franz.ww.TU-Berlin.DE
  96.                FULLNAME     Andreas Kvnig
  97.  
  98.            cpan> a /andk/
  99.            Author id = ANDK
  100.                EMAIL        a.koenig@franz.ww.TU-Berlin.DE
  101.                FULLNAME     Andreas Kvnig
  102.  
  103.            cpan> a /and.*rt/
  104.            Author          ANDYD (Andy Dougherty)
  105.            Author          MERLYN (Randal L. Schwartz)
  106.  
  107.  
  108.      make, test, install, clean  modules or distributions
  109.        These commands do indeed exist just as written above. Each of them
  110.        takes any number of arguments and investigates for each what it might
  111.        be. Is it a distribution file (recognized by embedded slashes), this
  112.        file is being processed. Is it a module, CPAN determines the
  113.        distribution file where this module is included and processes that.
  114.  
  115.        Any make, test, and readme are run unconditionally. A
  116.  
  117.          install <distribution_file>
  118.  
  119.        also is run unconditionally.  But for
  120.  
  121.          install <module>
  122.  
  123.        CPAN checks if an install is actually needed for it and prints _F_o_o _u_p
  124.        _t_o _d_a_t_e in case the module doesn't need to be updated.
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  137.  
  138.  
  139.  
  140.        CPAN also keeps track of what it has done within the current session
  141.        and doesn't try to build a package a second time regardless if it
  142.        succeeded or not. The force  command takes as first argument the method
  143.        to invoke (currently: make, test, or install) and executes the command
  144.        from scratch.
  145.  
  146.        Example:
  147.  
  148.            cpan> install OpenGL
  149.            OpenGL is up to date.
  150.            cpan> force install OpenGL
  151.            Running make
  152.            OpenGL-0.4/
  153.            OpenGL-0.4/COPYRIGHT
  154.            [...]
  155.  
  156.  
  157.      readme, look module or distribution
  158.        These two commands take only one argument, be it a module or a
  159.        distribution file. readme displays the README of the associated
  160.        distribution file. Look gets and untars (if not yet done) the
  161.        distribution file, changes to the appropriate directory and opens a
  162.        subshell process in that directory.
  163.  
  164.      CCCCPPPPAAAANNNN::::::::SSSShhhheeeellllllll
  165.  
  166.      The commands that are available in the shell interface are methods in the
  167.      package CPAN::Shell. If you enter the shell command, all your input is
  168.      split by the _T_e_x_t::_P_a_r_s_e_W_o_r_d_s::_s_h_e_l_l_w_o_r_d_s() routine which acts like most
  169.      shells do. The first word is being interpreted as the method to be called
  170.      and the rest of the words are treated as arguments to this method.
  171.      Continuation lines are supported if a line ends with a literal backslash.
  172.  
  173.      aaaauuuuttttoooobbbbuuuunnnnddddlllleeee
  174.  
  175.      autobundle writes a bundle file into the $CPAN::Config-
  176.      >{cpan_home}/Bundle directory. The file contains a list of all modules
  177.      that are both available from CPAN and currently installed within @INC.
  178.      The name of the bundle file is based on the current date and a counter.
  179.  
  180.      rrrreeeeccccoooommmmppppiiiilllleeee
  181.  
  182.      _r_e_c_o_m_p_i_l_e() is a very special command in that it takes no argument and
  183.      runs the make/test/install cycle with brute force over all installed
  184.      dynamically loadable extensions (aka XS modules) with 'force' in effect.
  185.      Primary purpose of this command is to finish a network installation.
  186.      Imagine, you have a common source tree for two different architectures.
  187.      You decide to do a completely independent fresh installation. You start
  188.      on one architecture with the help of a Bundle file produced earlier. CPAN
  189.      installs the whole Bundle for you, but when you try to repeat the job on
  190.      the second architecture, CPAN responds with a "Foo up to date" message
  191.      for all modules. So you will be glad to run recompile in the second
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  203.  
  204.  
  205.  
  206.      architecture and you're done.
  207.  
  208.      Another popular use for recompile is to act as a rescue in case your perl
  209.      breaks binary compatibility. If one of the modules that CPAN uses is in
  210.      turn depending on binary compatibility (so you cannot run CPAN commands),
  211.      then you should try the CPAN::Nox module for recovery.
  212.  
  213.      TTTThhhheeee ffffoooouuuurrrr CCCCPPPPAAAANNNN::::::::**** Classes: Author, Bundle, Module, Distribution
  214.  
  215.      Although it may be considered internal, the class hierarchie does matter
  216.      for both users and programmer. CPAN.pm deals with above mentioned four
  217.      classes, and all those classes share a set of methods. It is a classical
  218.      single polymorphism that is in effect.  A metaclass object registers all
  219.      objects of all kinds and indexes them with a string. The strings
  220.      referencing objects have a separated namespace (well, not completely
  221.      separated):
  222.  
  223.               Namespace                         Class
  224.  
  225.         words containing a "/" (slash)      Distribution
  226.          words starting with Bundle::          Bundle
  227.                everything else            Module or Author
  228.  
  229.      Modules know their associated Distribution objects. They always refer to
  230.      the most recent official release. Developers may mark their releases as
  231.      unstable development versions (by inserting an underbar into the visible
  232.      version number), so not always is the default distribution for a given
  233.      module the really hottest and newest. If a module Foo circulates on CPAN
  234.      in both version 1.23 and 1.23_90, CPAN.pm offers a convenient way to
  235.      install version 1.23 by saying
  236.  
  237.          install Foo
  238.  
  239.      This would install the complete distribution file (say BAR/Foo-
  240.      1.23.tar.gz) with all accompanying material in there. But if you would
  241.      like to install version 1.23_90, you need to know where the distribution
  242.      file resides on CPAN relative to the authors/id/ directory. If the author
  243.      is BAR, this might be BAR/Foo-1.23_90.tar.gz, so you would have to say
  244.  
  245.          install BAR/Foo-1.23_90.tar.gz
  246.  
  247.      The first example will be driven by an object of the class CPAN::Module,
  248.      the second by an object of class CPAN::Distribution.
  249.  
  250.      PPPPrrrrooooggggrrrraaaammmmmmmmeeeerrrr''''ssss iiiinnnntttteeeerrrrffffaaaacccceeee
  251.  
  252.      If you do not enter the shell, the available shell commands are both
  253.      available as methods (CPAN::Shell->_i_n_s_t_a_l_l(...)) and as functions in the
  254.      calling package (install(...)).
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  269.  
  270.  
  271.  
  272.      There's currently only one class that has a stable interface,
  273.      CPAN::Shell. All commands that are available in the CPAN shell are
  274.      methods of the class CPAN::Shell. Each of the commands that produce
  275.      listings of modules (r, autobundle, u) returns a list of the IDs of all
  276.      modules within the list.
  277.  
  278.      expand($type,@things)
  279.        The IDs of all objects available within a program are strings that can
  280.        be expanded to the corresponding real objects with the CPAN::Shell-
  281.        >_e_x_p_a_n_d("Module",@things) method. Expand returns a list of CPAN::Module
  282.        objects according to the @things arguments given. In scalar context it
  283.        only returns the first element of the list.
  284.  
  285.      Programming Examples
  286.        This enables the programmer to do operations that combine
  287.        functionalities that are available in the shell.
  288.  
  289.            # install everything that is outdated on my disk:
  290.            perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
  291.  
  292.            # install my favorite programs if necessary:
  293.            for $mod (qw(Net::FTP MD5 Data::Dumper)){
  294.                my $obj = CPAN::Shell->expand('Module',$mod);
  295.                $obj->install;
  296.            }
  297.  
  298.            # list all modules on my disk that have no VERSION number
  299.            for $mod (CPAN::Shell->expand("Module","/./")){
  300.                next unless $mod->inst_file;
  301.                # MakeMaker convention for undefined $VERSION:
  302.                next unless $mod->inst_version eq "undef";
  303.                print "No VERSION in ", $mod->id, "\n";
  304.            }
  305.  
  306.  
  307.      MMMMeeeetttthhhhooooddddssss iiiinnnn tttthhhheeee ffffoooouuuurrrr
  308.  
  309.      CCCCaaaacccchhhheeee MMMMaaaannnnaaaaggggeeeerrrr
  310.  
  311.      Currently the cache manager only keeps track of the build directory
  312.      ($CPAN::Config->{build_dir}). It is a simple FIFO mechanism that deletes
  313.      complete directories below build_dir as soon as the size of all
  314.      directories there gets bigger than $CPAN::Config->{build_cache} (in MB).
  315.      The contents of this cache may be used for later re-installations that
  316.      you intend to do manually, but will never be trusted by CPAN itself. This
  317.      is due to the fact that the user might use these directories for building
  318.      modules on different architectures.
  319.  
  320.      There is another directory ($CPAN::Config->{keep_source_where}) where the
  321.      original distribution files are kept. This directory is not covered by
  322.      the cache manager and must be controlled by the user. If you choose to
  323.      have the same directory as build_dir and as keep_source_where directory,
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  335.  
  336.  
  337.  
  338.      then your sources will be deleted with the same fifo mechanism.
  339.  
  340.      BBBBuuuunnnnddddlllleeeessss
  341.  
  342.      A bundle is just a perl module in the namespace Bundle:: that does not
  343.      define any functions or methods. It usually only contains documentation.
  344.  
  345.      It starts like a perl module with a package declaration and a $VERSION
  346.      variable. After that the pod section looks like any other pod with the
  347.      only difference, that _o_n_e _s_p_e_c_i_a_l _p_o_d _s_e_c_t_i_o_n exists starting with
  348.      (verbatim):
  349.  
  350.              =head1 CONTENTS
  351.  
  352.      In this pod section each line obeys the format
  353.  
  354.              Module_Name [Version_String] [- optional text]
  355.  
  356.      The only required part is the first field, the name of a module (eg.
  357.      Foo::Bar, ie. _n_o_t the name of the distribution file). The rest of the
  358.      line is optional. The comment part is delimited by a dash just as in the
  359.      man page header.
  360.  
  361.      The distribution of a bundle should follow the same convention as other
  362.      distributions.
  363.  
  364.      Bundles are treated specially in the CPAN package. If you say 'install
  365.      Bundle::Tkkit' (assuming such a bundle exists), CPAN will install all the
  366.      modules in the CONTENTS section of the pod.  You can install your own
  367.      Bundles locally by placing a conformant Bundle file somewhere into your
  368.      @INC path. The _a_u_t_o_b_u_n_d_l_e() command which is available in the shell
  369.      interface does that for you by including all currently installed modules
  370.      in a snapshot bundle file.
  371.  
  372.      PPPPrrrreeeerrrreeeeqqqquuuuiiiissssiiiitttteeeessss
  373.  
  374.      If you have a local mirror of CPAN and can access all files with "file:"
  375.      URLs, then you only need a perl better than perl5.003 to run this module.
  376.      Otherwise Net::FTP is strongly recommended. LWP may be required for non-
  377.      UNIX systems or if your nearest CPAN site is associated with an URL that
  378.      is not ftp:.
  379.  
  380.      If you have neither Net::FTP nor LWP, there is a fallback mechanism
  381.      implemented for an external ftp command or for an external lynx command.
  382.  
  383.      This module presumes that all packages on CPAN
  384.  
  385.      +o declare their $VERSION variable in an easy to parse manner. This
  386.        prerequisite can hardly be relaxed because it consumes by far too much
  387.        memory to load all packages into the running program just to determine
  388.        the $VERSION variable . Currently all programs that are dealing with
  389.        version use something like this
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  401.  
  402.  
  403.  
  404.            perl -MExtUtils::MakeMaker -le \
  405.                'print MM->parse_version($ARGV[0])' filename
  406.  
  407.        If you are author of a package and wonder if your $VERSION can be
  408.        parsed, please try the above method.
  409.  
  410.      +o come as compressed or gzipped tarfiles or as zip files and contain a
  411.        Makefile.PL (well we try to handle a bit more, but without much
  412.        enthusiasm).
  413.  
  414.      DDDDeeeebbbbuuuuggggggggiiiinnnngggg
  415.  
  416.      The debugging of this module is pretty difficult, because we have
  417.      interferences of the software producing the indices on CPAN, of the
  418.      mirroring process on CPAN, of packaging, of configuration, of
  419.      synchronicity, and of bugs within CPAN.pm.
  420.  
  421.      In interactive mode you can try "o debug" which will list options for
  422.      debugging the various parts of the package. The output may not be very
  423.      useful for you as it's just a byproduct of my own testing, but if you
  424.      have an idea which part of the package may have a bug, it's sometimes
  425.      worth to give it a try and send me more specific output. You should know
  426.      that "o debug" has built-in completion support.
  427.  
  428.      FFFFllllooooppppppppyyyy,,,, ZZZZiiiipppp,,,, aaaannnndddd aaaallllllll tttthhhhaaaatttt JJJJaaaazzzzzzzz
  429.  
  430.      CPAN.pm works nicely without network too. If you maintain machines that
  431.      are not networked at all, you should consider working with file:  URLs.
  432.      Of course, you have to collect your modules somewhere first. So you might
  433.      use CPAN.pm to put together all you need on a networked machine. Then
  434.      copy the $CPAN::Config->{keep_source_where} (but not
  435.      $CPAN::Config->{build_dir}) directory on a floppy. This floppy is kind of
  436.      a personal CPAN. CPAN.pm on the non-networked machines works nicely with
  437.      this floppy.
  438.  
  439. CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN
  440.      When the CPAN module is installed a site wide configuration file is
  441.      created as CPAN/Config.pm. The default values defined there can be
  442.      overridden in another configuration file: CPAN/MyConfig.pm. You can store
  443.      this file in $HOME/.cpan/CPAN/MyConfig.pm if you want, because
  444.      $HOME/.cpan is added to the search path of the CPAN module before the
  445.      _u_s_e() or _r_e_q_u_i_r_e() statements.
  446.  
  447.      Currently the following keys in the hash reference $CPAN::Config are
  448.      defined:
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  467.  
  468.  
  469.  
  470.        build_cache        size of cache for directories to build modules
  471.        build_dir          locally accessible directory to build modules
  472.        index_expire       after how many days refetch index files
  473.        cpan_home          local directory reserved for this package
  474.        gzip               location of external program gzip
  475.        inactivity_timeout breaks interactive Makefile.PLs after that
  476.                           many seconds inactivity. Set to 0 to never break.
  477.        inhibit_startup_message
  478.                           if true, does not print the startup message
  479.        keep_source        keep the source in a local directory?
  480.        keep_source_where  where keep the source (if we do)
  481.        make               location of external program make
  482.        make_arg           arguments that should always be passed to 'make'
  483.        make_install_arg   same as make_arg for 'make install'
  484.        makepl_arg         arguments passed to 'perl Makefile.PL'
  485.        pager              location of external program more (or any pager)
  486.        tar                location of external program tar
  487.        unzip              location of external program unzip
  488.        urllist            arrayref to nearby CPAN sites (or equivalent locations)
  489.  
  490.      You can set and query each of these options interactively in the cpan
  491.      shell with the command set defined within the o conf command:
  492.  
  493.      o conf <scalar option>
  494.        prints the current value of the _s_c_a_l_a_r _o_p_t_i_o_n
  495.  
  496.      o conf <scalar option> <value>
  497.        Sets the value of the _s_c_a_l_a_r _o_p_t_i_o_n to _v_a_l_u_e
  498.  
  499.      o conf <list option>
  500.        prints the current value of the _l_i_s_t _o_p_t_i_o_n in MakeMaker's neatvalue
  501.        format.
  502.  
  503.      o conf <list option> [shift|pop]
  504.        shifts or pops the array in the _l_i_s_t _o_p_t_i_o_n variable
  505.  
  506.      o conf <list option> [unshift|push|splice] <list>
  507.        works like the corresponding perl commands.
  508.  
  509.      CCCCDDDD----RRRROOOOMMMM ssssuuuuppppppppoooorrrrtttt
  510.  
  511.      The urllist parameter of the configuration table contains a list of URLs
  512.      that are to be used for downloading. If the list contains any file URLs,
  513.      CPAN always tries to get files from there first. This feature is disabled
  514.      for index files. So the recommendation for the owner of a CD-ROM with
  515.      CPAN contents is: include your local, possibly outdated CD-ROM as a file
  516.      URL at the end of urllist, e.g.
  517.  
  518.        o conf urllist push file://localhost/CDROM/CPAN
  519.  
  520.      CPAN.pm will then fetch the index files from one of the CPAN sites that
  521.      come at the beginning of urllist. It will later check for each module if
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  533.  
  534.  
  535.  
  536.      there is a local copy of the most recent version.
  537.  
  538. SSSSEEEECCCCUUUURRRRIIIITTTTYYYY
  539.      There's no strong security layer in CPAN.pm. CPAN.pm helps you to install
  540.      foreign, unmasked, unsigned code on your machine. We compare to a
  541.      checksum that comes from the net just as the distribution file itself. If
  542.      somebody has managed to tamper with the distribution file, they may have
  543.      as well tampered with the CHECKSUMS file. Future development will go
  544.      towards strong authentification.
  545.  
  546. EEEEXXXXPPPPOOOORRRRTTTT
  547.      Most functions in package CPAN are exported per default. The reason for
  548.      this is that the primary use is intended for the cpan shell or for
  549.      oneliners.
  550.  
  551. BBBBUUUUGGGGSSSS
  552.      we should give coverage for _all_ of the CPAN and not just the PAUSE
  553.      part, right? In this discussion CPAN and PAUSE have become equal -- but
  554.      they are not. PAUSE is authors/ and modules/. CPAN is PAUSE plus the
  555.      clpa/, doc/, misc/, ports/, src/, scripts/.
  556.  
  557.      Future development should be directed towards a better integration of the
  558.      other parts.
  559.  
  560. AAAAUUUUTTTTHHHHOOOORRRR
  561.      Andreas Kvnig <a.koenig@mind.de>
  562.  
  563. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  564.      _p_e_r_l(1), _C_P_A_N::_N_o_x(3)
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. CCCCPPPPAAAANNNN((((3333))))                                                                CCCCPPPPAAAANNNN((((3333))))
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.                                                                        PPPPaaaaggggeeee 11110000
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.